From 98e88b7b53f69092bc2c90a5eb32d2d18acad63f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timm=20B=C3=A4der?= Date: Fri, 16 Oct 2020 21:55:37 +0200 Subject: [PATCH] text: Avoid a crash Calculate the "was previous focus in a child widget" condition before chaining up into grab_focus, to a void that unreffing the prev_focus widget. --- gtk/gtktext.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gtk/gtktext.c b/gtk/gtktext.c index 8f2745caf6..ceb7addbfd 100644 --- a/gtk/gtktext.c +++ b/gtk/gtktext.c @@ -3228,14 +3228,15 @@ gtk_text_grab_focus (GtkWidget *widget) GtkTextPrivate *priv = gtk_text_get_instance_private (self); gboolean select_on_focus; GtkWidget *prev_focus; + gboolean prev_focus_was_child; prev_focus = gtk_root_get_focus (gtk_widget_get_root (widget)); + prev_focus_was_child = prev_focus && gtk_widget_is_ancestor (prev_focus, widget); if (!GTK_WIDGET_CLASS (gtk_text_parent_class)->grab_focus (GTK_WIDGET (self))) return FALSE; - if (priv->editable && !priv->in_click && - !(prev_focus && gtk_widget_is_ancestor (prev_focus, widget))) + if (priv->editable && !priv->in_click && !prev_focus_was_child) { g_object_get (gtk_widget_get_settings (widget), "gtk-entry-select-on-focus", -- 2.30.2